Welcome to pandas!

7.8 分组后的过滤处理

分组后的过滤,是以组为单位过滤,而不是过滤分组中的某条记录,关于分组的过滤可以使用filter()函数,结构如下:

Filter(func,dropna=True,*args,**kwargs)

func :应用于每个DataFrame子表的函数,应该返回布尔值True或False

dropna :删除未通过删除的组,默认为True

*args :传递给func的位置参数

**kwargs :传递给func的关键字参数


import pandas as pd,numpy as np

df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.7.08 分组后的过滤处理.xlsx" )

print (df)

df1=df.groupby( "日期" ).filter( lambda d:np.all(d.iloc[:, 2 :].apply( lambda s:s.sum()>=15, axis = 1 )))

print (df1)

返回:

日期 成员 A产品 B产品
0 2021-05-01 张三 9 8
1 2021-05-01 李四 10 5
2 2021-05-02 王麻子 4 9
3 2021-05-02 许流子 5 13
4 2021-05-03 郭流子 4 9
5 2021-05-03 小曾 6 7
6 2021-05-03 韦大宝 13 4

日期 成员 A产品 B产品
0 2021-05-01 张三 9 8
1 2021-05-01 李四 10 5